{
  "nbformat": 4,
  "nbformat_minor": 0,
  "metadata": {
    "colab": {
      "name": "AMD-Training.ipynb",
      "version": "0.3.2",
      "provenance": [],
      "collapsed_sections": [],
      "toc_visible": true
    },
    "kernelspec": {
      "name": "python3",
      "display_name": "Python 3"
    }
  },
  "cells": [
    {
      "metadata": {
        "id": "HK0vdfSh6k3V",
        "colab_type": "code",
        "colab": {}
      },
      "cell_type": "code",
      "source": [
        "import librosa\n",
        "import librosa.display\n",
        "import numpy as np\n",
        "import pandas as pd\n",
        "import os"
      ],
      "execution_count": 0,
      "outputs": []
    },
    {
      "metadata": {
        "id": "ZyL2xb3t6m2h",
        "colab_type": "code",
        "outputId": "08e094c4-57da-4168-dbe4-7c8df0b72478",
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 122
        }
      },
      "cell_type": "code",
      "source": [
        "from google.colab import drive\n",
        "\n",
        "# This will prompt for authorization.\n",
        "drive.mount('/content/drive', force_remount=True)"
      ],
      "execution_count": 2,
      "outputs": [
        {
          "output_type": "stream",
          "text": [
            "Go to this URL in a browser: https://accounts.google.com/o/oauth2/auth?client_id=947318989803-6bn6qk8qdgf4n4g3pfee6491hc0brc4i.apps.googleusercontent.com&redirect_uri=urn%3Aietf%3Awg%3Aoauth%3A2.0%3Aoob&scope=email%20https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fdocs.test%20https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fdrive%20https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fdrive.photos.readonly%20https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fpeopleapi.readonly&response_type=code\n",
            "\n",
            "Enter your authorization code:\n",
            "··········\n",
            "Mounted at /content/drive\n"
          ],
          "name": "stdout"
        }
      ]
    },
    {
      "metadata": {
        "id": "fZQsByci6-OA",
        "colab_type": "code",
        "outputId": "e8a10fa2-e0d6-4bfc-9e4e-9b483b744ee9",
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 564
        }
      },
      "cell_type": "code",
      "source": [
        "RECORDINGS_PATH = \"/content/drive/My Drive/amd-training\"\n",
        "os.chdir(RECORDINGS_PATH)\n",
        "df = pd.read_pickle(\"amd-df-01-29-10-41.pkl\")\n",
        "\n",
        "\n",
        "#convert label seriers to ints\n",
        "from sklearn import preprocessing\n",
        "le = preprocessing.LabelEncoder()\n",
        "le.fit(df['label'])\n",
        "df['label'] = le.transform(df['label']) \n",
        "\n",
        "print(\"count:\")\n",
        "print(df.label.value_counts())\n",
        "le_name_mapping = dict(zip(le.classes_, le.transform(le.classes_)))\n",
        "print(le_name_mapping)\n",
        "class_names = le.classes_\n",
        "\n",
        "df.head()\n"
      ],
      "execution_count": 3,
      "outputs": [
        {
          "output_type": "stream",
          "text": [
            "count:\n",
            "0    115\n",
            "1    100\n",
            "Name: label, dtype: int64\n",
            "{'beep': 0, 'speech': 1}\n"
          ],
          "name": "stdout"
        },
        {
          "output_type": "execute_result",
          "data": {
            "text/html": [
              "<div>\n",
              "<style scoped>\n",
              "    .dataframe tbody tr th:only-of-type {\n",
              "        vertical-align: middle;\n",
              "    }\n",
              "\n",
              "    .dataframe tbody tr th {\n",
              "        vertical-align: top;\n",
              "    }\n",
              "\n",
              "    .dataframe thead th {\n",
              "        text-align: right;\n",
              "    }\n",
              "</style>\n",
              "<table border=\"1\" class=\"dataframe\">\n",
              "  <thead>\n",
              "    <tr style=\"text-align: right;\">\n",
              "      <th></th>\n",
              "      <th>file_path</th>\n",
              "      <th>mfccs_40</th>\n",
              "      <th>chroma</th>\n",
              "      <th>mel</th>\n",
              "      <th>contrast</th>\n",
              "      <th>tonnetz</th>\n",
              "      <th>duration</th>\n",
              "      <th>label</th>\n",
              "    </tr>\n",
              "  </thead>\n",
              "  <tbody>\n",
              "    <tr>\n",
              "      <th>0</th>\n",
              "      <td>answering-machine/8cc2e697-18ac-490d-b111-c903...</td>\n",
              "      <td>[-397.80851932784657, 129.86299878531597, -31....</td>\n",
              "      <td>[0.027769387920805723, 0.026351956519476274, 0...</td>\n",
              "      <td>[0.00501725632249827, 0.00037307307871889937, ...</td>\n",
              "      <td>[17.189749244938195, 9.807171017039957, 31.405...</td>\n",
              "      <td>[-0.026947413402462945, 0.04490845356302127, -...</td>\n",
              "      <td>0.313515</td>\n",
              "      <td>0</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>2</th>\n",
              "      <td>answering-machine/e5030474-e71d-42ef-ae19-9de2...</td>\n",
              "      <td>[-521.2452137232904, 128.2723489959437, -57.08...</td>\n",
              "      <td>[0.022214466246388547, 0.020847748338262397, 0...</td>\n",
              "      <td>[8.08117545043548e-05, 2.5279908521751625e-05,...</td>\n",
              "      <td>[16.802354517790313, 11.434238706762827, 15.09...</td>\n",
              "      <td>[-0.04474616114861632, -0.026757793833147053, ...</td>\n",
              "      <td>0.391565</td>\n",
              "      <td>0</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>4</th>\n",
              "      <td>answering-machine/86e364ff-93a6-44af-8118-0800...</td>\n",
              "      <td>[-513.9673240941539, 128.13275036291947, -52.2...</td>\n",
              "      <td>[0.03300533854443605, 0.03123040030561039, 0.0...</td>\n",
              "      <td>[0.00019455741680095618, 0.0001307129131768416...</td>\n",
              "      <td>[18.01022716689398, 11.078483483064241, 14.929...</td>\n",
              "      <td>[-0.05350142196897563, -0.011836425600422792, ...</td>\n",
              "      <td>0.392698</td>\n",
              "      <td>0</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>6</th>\n",
              "      <td>answering-machine/55b654e5-7d9f-4132-bc98-93e5...</td>\n",
              "      <td>[-292.5310592899462, 133.0464309785009, -107.7...</td>\n",
              "      <td>[0.04289080226234471, 0.04354302126840047, 0.0...</td>\n",
              "      <td>[0.05034664909852743, 0.03370046800801785, 0.0...</td>\n",
              "      <td>[10.553363920668197, 11.608186538742027, 11.68...</td>\n",
              "      <td>[-0.00994283535272708, 0.011938087781317153, 0...</td>\n",
              "      <td>0.167619</td>\n",
              "      <td>0</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>8</th>\n",
              "      <td>answering-machine/77310681-9ccf-4da7-bf55-dda0...</td>\n",
              "      <td>[-452.8306540327004, 146.34936352766186, -33.5...</td>\n",
              "      <td>[0.02433844901405175, 0.02294809277630422, 0.0...</td>\n",
              "      <td>[0.00011991504535596756, 0.0002250080590753591...</td>\n",
              "      <td>[12.634893574252038, 10.697157333437568, 32.58...</td>\n",
              "      <td>[-0.03433607707284978, 0.039762104955467496, -...</td>\n",
              "      <td>0.315420</td>\n",
              "      <td>0</td>\n",
              "    </tr>\n",
              "  </tbody>\n",
              "</table>\n",
              "</div>"
            ],
            "text/plain": [
              "                                           file_path  \\\n",
              "0  answering-machine/8cc2e697-18ac-490d-b111-c903...   \n",
              "2  answering-machine/e5030474-e71d-42ef-ae19-9de2...   \n",
              "4  answering-machine/86e364ff-93a6-44af-8118-0800...   \n",
              "6  answering-machine/55b654e5-7d9f-4132-bc98-93e5...   \n",
              "8  answering-machine/77310681-9ccf-4da7-bf55-dda0...   \n",
              "\n",
              "                                            mfccs_40  \\\n",
              "0  [-397.80851932784657, 129.86299878531597, -31....   \n",
              "2  [-521.2452137232904, 128.2723489959437, -57.08...   \n",
              "4  [-513.9673240941539, 128.13275036291947, -52.2...   \n",
              "6  [-292.5310592899462, 133.0464309785009, -107.7...   \n",
              "8  [-452.8306540327004, 146.34936352766186, -33.5...   \n",
              "\n",
              "                                              chroma  \\\n",
              "0  [0.027769387920805723, 0.026351956519476274, 0...   \n",
              "2  [0.022214466246388547, 0.020847748338262397, 0...   \n",
              "4  [0.03300533854443605, 0.03123040030561039, 0.0...   \n",
              "6  [0.04289080226234471, 0.04354302126840047, 0.0...   \n",
              "8  [0.02433844901405175, 0.02294809277630422, 0.0...   \n",
              "\n",
              "                                                 mel  \\\n",
              "0  [0.00501725632249827, 0.00037307307871889937, ...   \n",
              "2  [8.08117545043548e-05, 2.5279908521751625e-05,...   \n",
              "4  [0.00019455741680095618, 0.0001307129131768416...   \n",
              "6  [0.05034664909852743, 0.03370046800801785, 0.0...   \n",
              "8  [0.00011991504535596756, 0.0002250080590753591...   \n",
              "\n",
              "                                            contrast  \\\n",
              "0  [17.189749244938195, 9.807171017039957, 31.405...   \n",
              "2  [16.802354517790313, 11.434238706762827, 15.09...   \n",
              "4  [18.01022716689398, 11.078483483064241, 14.929...   \n",
              "6  [10.553363920668197, 11.608186538742027, 11.68...   \n",
              "8  [12.634893574252038, 10.697157333437568, 32.58...   \n",
              "\n",
              "                                             tonnetz  duration  label  \n",
              "0  [-0.026947413402462945, 0.04490845356302127, -...  0.313515      0  \n",
              "2  [-0.04474616114861632, -0.026757793833147053, ...  0.391565      0  \n",
              "4  [-0.05350142196897563, -0.011836425600422792, ...  0.392698      0  \n",
              "6  [-0.00994283535272708, 0.011938087781317153, 0...  0.167619      0  \n",
              "8  [-0.03433607707284978, 0.039762104955467496, -...  0.315420      0  "
            ]
          },
          "metadata": {
            "tags": []
          },
          "execution_count": 3
        }
      ]
    },
    {
      "metadata": {
        "id": "Vz7r076OLtN6",
        "colab_type": "code",
        "outputId": "6e9daf1b-09cc-4fe2-a076-cc795ab2ea3d",
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 68
        }
      },
      "cell_type": "code",
      "source": [
        "#remove files with durations longer than 10 seconds\n",
        "df = df.copy()\n",
        "df = df.drop(df[ df['duration']>10].index)\n",
        "df.reset_index(drop=True, inplace=True)\n",
        "\n",
        "print(df.label.value_counts())\n"
      ],
      "execution_count": 4,
      "outputs": [
        {
          "output_type": "stream",
          "text": [
            "0    115\n",
            "1     73\n",
            "Name: label, dtype: int64\n"
          ],
          "name": "stdout"
        }
      ]
    },
    {
      "metadata": {
        "id": "d5qUJc-vCuf7",
        "colab_type": "code",
        "colab": {}
      },
      "cell_type": "code",
      "source": [
        "from sklearn import metrics\n",
        "import matplotlib.pyplot as plt\n",
        "import itertools\n",
        "from sklearn.externals import joblib\n",
        "from google.colab import files\n",
        "import datetime\n",
        "import pickle\n",
        "\n",
        "\n",
        "def print_classification_results(y_test, res):\n",
        "    print(metrics.accuracy_score(y_test, res))\n",
        "    print(metrics.classification_report(y_test, res))\n",
        "    print(metrics.confusion_matrix(y_test, res))\n",
        "    print(\"\")\n",
        "\n",
        "    \n",
        "def plot_confusion_matrix(cm, classes,\n",
        "                          normalize=False,\n",
        "                          title='Confusion matrix',\n",
        "                          cmap=plt.cm.Blues):\n",
        "    \"\"\"\n",
        "    This function prints and plots the confusion matrix.\n",
        "    Normalization can be applied by setting `normalize=True`.\n",
        "    \"\"\"\n",
        "    if normalize:\n",
        "        cm = cm.astype('float') / cm.sum(axis=1)[:, np.newaxis]\n",
        "        print(\"Normalized confusion matrix\")\n",
        "    else:\n",
        "        print('Confusion matrix, without normalization')\n",
        "\n",
        "    print(cm)\n",
        "\n",
        "    plt.imshow(cm, interpolation='nearest', cmap=cmap)\n",
        "    plt.title(title)\n",
        "    plt.colorbar()\n",
        "    tick_marks = np.arange(len(classes))\n",
        "    plt.xticks(tick_marks, classes, rotation=45)\n",
        "    plt.yticks(tick_marks, classes)\n",
        "\n",
        "    fmt = '.2f' if normalize else 'd'\n",
        "    thresh = cm.max() / 2.\n",
        "    for i, j in itertools.product(range(cm.shape[0]), range(cm.shape[1])):\n",
        "        plt.text(j, i, format(cm[i, j], fmt),\n",
        "                 horizontalalignment=\"center\",\n",
        "                 color=\"white\" if cm[i, j] > thresh else \"black\")\n",
        "\n",
        "    plt.ylabel('True label')\n",
        "    plt.xlabel('Predicted label')\n",
        "    plt.tight_layout()\n",
        "    \n",
        "def save_model(model, model_name):\n",
        "  filename = \"{}-{}.pkl\".format(model_name, datetime.datetime.now().strftime(\"%Y%m%dT%H%M\"))\n",
        "  pickle.dump(model, open(filename, 'wb'))\n",
        "  files.download(filename)\n",
        "  \n"
      ],
      "execution_count": 0,
      "outputs": []
    },
    {
      "metadata": {
        "id": "qdkrKetkqwTO",
        "colab_type": "code",
        "colab": {}
      },
      "cell_type": "code",
      "source": [
        "from sklearn.model_selection import train_test_split\n",
        "from sklearn.model_selection import cross_val_score\n",
        "from sklearn import preprocessing\n",
        "\n",
        "def generateFeaturesLabels(features_list):\n",
        "  total_features_len = np.sum([len(df[feature][0]) for feature in features_list])\n",
        "  print(\"total number of features\",total_features_len)\n",
        "  features, labels = np.empty((0,total_features_len)), np.empty(0)\n",
        "  for index, row in df.iterrows():\n",
        "    a = []\n",
        "    for feature in features_list:\n",
        "      a.append(row[feature])\n",
        "      \n",
        "    features = np.vstack([features,np.hstack(a)])\n",
        "    labels = np.append(labels, row[\"label\"])\n",
        "  return np.array(features), np.array(labels, dtype = np.int)\n",
        "\n",
        "def train(features, model):\n",
        "  X, y = generateFeaturesLabels(features)\n",
        "  X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.33, random_state=42)\n",
        "  \n",
        "  model.fit(X_train, y_train)\n",
        "  print(\"Score:\",model.score(X_test, y_test))\n",
        "  \n",
        "  cross_val_scores = cross_val_score(model, X, y, cv=5, scoring='f1_macro')\n",
        "  print(\"cross_val_scores:\", cross_val_scores)\n",
        "  print(\"Accuracy: %0.2f (+/- %0.2f)\" % (cross_val_scores.mean(), cross_val_scores.std() * 2))\n",
        "  \n",
        "  predictions = model.predict(X_test)\n",
        "\n",
        "  print_classification_results(y_test, predictions)\n",
        "  \n",
        "  cm = metrics.confusion_matrix(y_test, predictions)\n",
        "  plot_confusion_matrix(cm, class_names)\n",
        "  \n",
        "  print(\"*** Scaled ***\")\n",
        "  scaler = preprocessing.StandardScaler().fit(X_train)\n",
        "  X_train_transformed = scaler.transform(X_train)\n",
        "  scaled_model = model.fit(X_train_transformed, y_train)\n",
        "  X_test_transformed = scaler.transform(X_test)\n",
        "  print(\"scaled_model score:\",model.score(X_test_transformed, y_test))\n",
        "  \n",
        "  return model\n",
        "  \n",
        " "
      ],
      "execution_count": 0,
      "outputs": []
    },
    {
      "metadata": {
        "id": "rV7k6IAdwj3Y",
        "colab_type": "text"
      },
      "cell_type": "markdown",
      "source": [
        "# Training"
      ]
    },
    {
      "metadata": {
        "id": "Nzzs3aFAsnek",
        "colab_type": "text"
      },
      "cell_type": "markdown",
      "source": [
        "## OneVsRest"
      ]
    },
    {
      "metadata": {
        "id": "jQAWYl_JsqAE",
        "colab_type": "code",
        "outputId": "5c0022ba-db3c-4996-bcea-ca16af96477a",
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 860
        }
      },
      "cell_type": "code",
      "source": [
        "from sklearn.multiclass import OneVsRestClassifier\n",
        "from sklearn.linear_model import LogisticRegression\n",
        "base_lr = LogisticRegression(solver='lbfgs', max_iter=4000)\n",
        "ovr = OneVsRestClassifier(base_lr)\n",
        "train(['mfccs_40'], ovr)"
      ],
      "execution_count": 7,
      "outputs": [
        {
          "output_type": "stream",
          "text": [
            "total number of features 40\n",
            "Score: 0.9682539682539683\n",
            "cross_val_scores: [0.97275986 0.94602273 1.         1.         0.97084318]\n",
            "Accuracy: 0.98 (+/- 0.04)\n",
            "0.9682539682539683\n",
            "              precision    recall  f1-score   support\n",
            "\n",
            "           0       0.97      0.97      0.97        40\n",
            "           1       0.96      0.96      0.96        23\n",
            "\n",
            "   micro avg       0.97      0.97      0.97        63\n",
            "   macro avg       0.97      0.97      0.97        63\n",
            "weighted avg       0.97      0.97      0.97        63\n",
            "\n",
            "[[39  1]\n",
            " [ 1 22]]\n",
            "\n",
            "Confusion matrix, without normalization\n",
            "[[39  1]\n",
            " [ 1 22]]\n",
            "*** Scaled ***\n",
            "scaled_model score: 0.9841269841269841\n"
          ],
          "name": "stdout"
        },
        {
          "output_type": "execute_result",
          "data": {
            "text/plain": [
              "OneVsRestClassifier(estimator=LogisticRegression(C=1.0, class_weight=None, dual=False, fit_intercept=True,\n",
              "          intercept_scaling=1, max_iter=4000, multi_class='warn',\n",
              "          n_jobs=None, penalty='l2', random_state=None, solver='lbfgs',\n",
              "          tol=0.0001, verbose=0, warm_start=False),\n",
              "          n_jobs=None)"
            ]
          },
          "metadata": {
            "tags": []
          },
          "execution_count": 7
        },
        {
          "output_type": "display_data",
          "data": {
            "image/png": "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\nTQAAAABJRU5ErkJggg==\n",
            "text/plain": [
              "<Figure size 576x396 with 2 Axes>"
            ]
          },
          "metadata": {
            "tags": []
          }
        }
      ]
    },
    {
      "metadata": {
        "id": "t7UzKYQpx2EC",
        "colab_type": "code",
        "colab": {}
      },
      "cell_type": "code",
      "source": [
        "save_model(ovr,\"ovr\")"
      ],
      "execution_count": 0,
      "outputs": []
    },
    {
      "metadata": {
        "id": "ViJIfEnc49if",
        "colab_type": "text"
      },
      "cell_type": "markdown",
      "source": [
        "## RandomForest"
      ]
    },
    {
      "metadata": {
        "id": "V3XV-OCM4_wE",
        "colab_type": "code",
        "outputId": "7fc0d0ec-fa62-4728-b353-d4009ed5f58a",
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 775
        }
      },
      "cell_type": "code",
      "source": [
        "features_to_include = ['mfccs_40']\n",
        "from sklearn.ensemble import RandomForestClassifier\n",
        "model = RandomForestClassifier(n_estimators = 50)\n",
        "rf = train(features_to_include, model)"
      ],
      "execution_count": 8,
      "outputs": [
        {
          "output_type": "stream",
          "text": [
            "total number of features 40\n",
            "Score: 1.0\n",
            "cross_val_scores: [0.97275986 0.97275986 1.         1.         1.        ]\n",
            "Accuracy: 0.99 (+/- 0.03)\n",
            "1.0\n",
            "              precision    recall  f1-score   support\n",
            "\n",
            "           0       1.00      1.00      1.00        40\n",
            "           1       1.00      1.00      1.00        23\n",
            "\n",
            "   micro avg       1.00      1.00      1.00        63\n",
            "   macro avg       1.00      1.00      1.00        63\n",
            "weighted avg       1.00      1.00      1.00        63\n",
            "\n",
            "[[40  0]\n",
            " [ 0 23]]\n",
            "\n",
            "Confusion matrix, without normalization\n",
            "[[40  0]\n",
            " [ 0 23]]\n",
            "*** Scaled ***\n",
            "scaled_model score: 0.9841269841269841\n"
          ],
          "name": "stdout"
        },
        {
          "output_type": "display_data",
          "data": {
            "image/png": "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\nMAF+PyeWmppK9erVnV2KmNTNacPTp0+zevVq9u3bxxdffIGbmxvff/89Y8aM4bPPPqNmzZpkZmZq\n2lBum86BCfD7ObFy5co5uwwxMYvFwvfff897771HgwYNSEtL48yZM9StW5f69euTmprK9evXadiw\nIWXKlHF2uVIK6ByYiNwRhw8fZs6cOUycOJGnn36abt26AfDee++xZ88etm/fTmBgoJOrlNJEH2QW\nkTsiMzOTpk2bcvz4cXbs2MH333/PjRs3OHbsGElJSYSFhfHII4+QnZ2tL0CVO0LnwETkjkhMTCQy\nMpJdu3bZPgB/6NAhzp8/j9VqJTMzk/79++Pt7e3sUqWUUICJiEPs3r2bBQsWMGTIEG7cuMGPP/5I\n37599fUocscowETkjrp27Rrr169n/fr1vPbaa7Rr146cnBwyMjLw9PR0dnlSiijAROSOy8rK4tq1\na1SoUMH2FSoid5oCTERETEn/LBIREVNSgImIiCkpwERExJQUYCIiYkoKMDG1c+fO0bBhQ0JDQwkN\nDaVPnz78/e9/5+rVq8Ue86uvviI8PByAUaNGER8fn+drf/zxR+Li4go99o0bN/jLX/5yy/YPP/yQ\nOXPm5Ltvx44dOXv2bKGPFR4ezldffVXo14uYjQJMTK9ChQpEREQQERHBl19+ib+/Px9//PEdGXvO\nnDlUrlw5z+fXrFlTpAATkTtH10KUUqd58+ZERkYCv3ctXbp0IS4ujrlz57Jx40aWL1+O1WqlQoUK\nvPPOO/j6+rJixQq++OILqlSpgr+/v22sjh07snTpUmrUqME777zDsWPHAHjppZdwc3Nj8+bNHDly\nhHHjxlGzZk3eeust0tLSSE1N5fXXX6dVq1acOXOGN954A09PT1q0aFFg/StXrmTt2rWUKVOGe+65\nhzlz5ti+KeCrr77i6NGjJCYm8o9//IMWLVrw22+/2T2uSGmnAJNSJTs7m2+++YZmzZrZttWqVYs3\n3niDCxcusGDBAqKionB3d+ezzz5j4cKFDB06lLlz57J582Z8fX0ZPHgw5cuXzzXuunXruHTpEqtW\nreLq1auMHj2ajz/+mKCgIAYPHkzLli157bXXePnll3n00UdJSEigd+/ebNmyhY8++ohnnnmGkJAQ\ntmzZUuB7yMjIYPHixXh7ezNp0iTWrVvHCy+8AICPjw+fffYZu3fvZsaMGaxZs4bJkyfbPa5IaacA\nE9NLSkoiNDQUgJycHB5++GH69+9ve75JkyYAHDx4kISEBAYMGAD8fvX06tWrc/bsWapVq4avry8A\nLVq04MSJE7mOceTIEVv3VK5cOT755JNb6ti7dy8pKSl89NFHALi5uZGYmEhsbCyvvfYaAI8++miB\n78fHx4fXXnsNFxcXzp8/T6VKlWzPtW7d2vaeTp06le9xRUo7BZiY3s1zYHm5+eWJ7u7uNGrUiIUL\nF+Z6/ujRo1gsFtvjnJycW8awWCx2t/+Ru7s7H3744S0Xq7VarbZLKWVnZ+c7xsWLF5kxYwYbNmzA\nz8+PGTNm3FLHn8fM67gipZ0Wcchd48EHH+TIkSMkJCQAsGnTJr799lsCAwM5d+4cV69exWq1snv3\n7lv2bdKkCTt27ADg+vXrPPvss2RmZmKxWMjKygKgWbNmbNq0Cfi9K5w6dSoAderU4dChQwB2x/6j\nxMREfH198fPz4/Lly+zcuZPMzEzb83v27AF+X/1Yr169fI8rUtqpA5O7RuXKlZkwYQIDBw7E09MT\nDw8PZsyYQfny5Rk0aBB9+/alWrVqVKtWjfT09Fz7dunShR9//JE+ffqQnZ3NSy+9hLu7O61bt+bN\nN99k/PjxTJgwgUmTJrFhwwYyMzMZPHgwAEOHDmXs2LFs3ryZJk2a4OaW91+7oKAgatasSa9evQgM\nDGTEiBFMnjyZdu3aAXD58mUGDhzIb7/9xptvvgmQ53FFSjtdzFdERExJU4giImJKCjARETElBZiI\niJiSAkxERExJASYiIqakABMREVNSgImIiCkpwERExJT+P4L/VMpik6KVAAAAAElFTkSuQmCC\n",
            "text/plain": [
              "<Figure size 576x396 with 2 Axes>"
            ]
          },
          "metadata": {
            "tags": []
          }
        }
      ]
    },
    {
      "metadata": {
        "id": "KXtXNSZSlCmH",
        "colab_type": "code",
        "colab": {}
      },
      "cell_type": "code",
      "source": [
        "#working model\n",
        "from sklearn.ensemble import RandomForestClassifier\n",
        "from sklearn.model_selection import train_test_split\n",
        "\n",
        "rf = RandomForestClassifier(n_estimators = 100)\n",
        "X = list(df.mfccs_40.values)\n",
        "y = df.label.values\n",
        "X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.33, random_state=42)\n",
        "\n",
        "fit_model = rf.fit(X_train, y_train)"
      ],
      "execution_count": 0,
      "outputs": []
    },
    {
      "metadata": {
        "id": "_JIua0hTyPwq",
        "colab_type": "code",
        "colab": {}
      },
      "cell_type": "code",
      "source": [
        "save_model(fit_model,\"rf\")"
      ],
      "execution_count": 0,
      "outputs": []
    },
    {
      "metadata": {
        "id": "W_gkeCdhC3eM",
        "colab_type": "text"
      },
      "cell_type": "markdown",
      "source": [
        "## XGBoost"
      ]
    },
    {
      "metadata": {
        "id": "2v_LDj2M_8WY",
        "colab_type": "code",
        "outputId": "a0b41f92-940a-44e5-ba8a-77849f696e78",
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 877
        }
      },
      "cell_type": "code",
      "source": [
        "import xgboost as xgb\n",
        "\n",
        "features_to_include = ['mfccs_40']\n",
        "model = xgb.XGBClassifier()\n",
        "train(features_to_include, model)"
      ],
      "execution_count": 9,
      "outputs": [
        {
          "output_type": "stream",
          "text": [
            "total number of features 40\n",
            "Score: 0.9682539682539683\n",
            "cross_val_scores: [0.94602273 0.94492754 0.94345238 0.94070513 0.94393939]\n",
            "Accuracy: 0.94 (+/- 0.00)\n",
            "0.9682539682539683\n",
            "              precision    recall  f1-score   support\n",
            "\n",
            "           0       1.00      0.95      0.97        40\n",
            "           1       0.92      1.00      0.96        23\n",
            "\n",
            "   micro avg       0.97      0.97      0.97        63\n",
            "   macro avg       0.96      0.97      0.97        63\n",
            "weighted avg       0.97      0.97      0.97        63\n",
            "\n",
            "[[38  2]\n",
            " [ 0 23]]\n",
            "\n",
            "Confusion matrix, without normalization\n",
            "[[38  2]\n",
            " [ 0 23]]\n",
            "*** Scaled ***\n",
            "scaled_model score: 0.9682539682539683\n"
          ],
          "name": "stdout"
        },
        {
          "output_type": "execute_result",
          "data": {
            "text/plain": [
              "XGBClassifier(base_score=0.5, booster='gbtree', colsample_bylevel=1,\n",
              "       colsample_bytree=1, gamma=0, learning_rate=0.1, max_delta_step=0,\n",
              "       max_depth=3, min_child_weight=1, missing=None, n_estimators=100,\n",
              "       n_jobs=1, nthread=None, objective='binary:logistic', random_state=0,\n",
              "       reg_alpha=0, reg_lambda=1, scale_pos_weight=1, seed=None,\n",
              "       silent=True, subsample=1)"
            ]
          },
          "metadata": {
            "tags": []
          },
          "execution_count": 9
        },
        {
          "output_type": "display_data",
          "data": {
            "image/png": "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\nAABJRU5ErkJggg==\n",
            "text/plain": [
              "<Figure size 576x396 with 2 Axes>"
            ]
          },
          "metadata": {
            "tags": []
          }
        }
      ]
    },
    {
      "metadata": {
        "id": "Bes2N-7rbQbn",
        "colab_type": "text"
      },
      "cell_type": "markdown",
      "source": [
        ""
      ]
    },
    {
      "metadata": {
        "id": "YBqTkhrAC7e_",
        "colab_type": "text"
      },
      "cell_type": "markdown",
      "source": [
        "## LogisticRegression"
      ]
    },
    {
      "metadata": {
        "id": "QRg7yGf6C_He",
        "colab_type": "code",
        "outputId": "205e0a09-e6d2-4a12-f2c6-b76d01ee76a1",
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 843
        }
      },
      "cell_type": "code",
      "source": [
        "from sklearn.linear_model import LogisticRegression\n",
        "\n",
        "features_to_include = ['mfccs_40']\n",
        "logisticRegr = LogisticRegression(solver='liblinear', max_iter=200)\n",
        "train(features_to_include, logisticRegr)"
      ],
      "execution_count": 10,
      "outputs": [
        {
          "output_type": "stream",
          "text": [
            "total number of features 40\n",
            "Score: 0.9682539682539683\n",
            "cross_val_scores: [0.94602273 0.94602273 1.         0.97084318 1.        ]\n",
            "Accuracy: 0.97 (+/- 0.05)\n",
            "0.9682539682539683\n",
            "              precision    recall  f1-score   support\n",
            "\n",
            "           0       1.00      0.95      0.97        40\n",
            "           1       0.92      1.00      0.96        23\n",
            "\n",
            "   micro avg       0.97      0.97      0.97        63\n",
            "   macro avg       0.96      0.97      0.97        63\n",
            "weighted avg       0.97      0.97      0.97        63\n",
            "\n",
            "[[38  2]\n",
            " [ 0 23]]\n",
            "\n",
            "Confusion matrix, without normalization\n",
            "[[38  2]\n",
            " [ 0 23]]\n",
            "*** Scaled ***\n",
            "scaled_model score: 0.9682539682539683\n"
          ],
          "name": "stdout"
        },
        {
          "output_type": "execute_result",
          "data": {
            "text/plain": [
              "LogisticRegression(C=1.0, class_weight=None, dual=False, fit_intercept=True,\n",
              "          intercept_scaling=1, max_iter=200, multi_class='warn',\n",
              "          n_jobs=None, penalty='l2', random_state=None, solver='liblinear',\n",
              "          tol=0.0001, verbose=0, warm_start=False)"
            ]
          },
          "metadata": {
            "tags": []
          },
          "execution_count": 10
        },
        {
          "output_type": "display_data",
          "data": {
            "image/png": "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\nAABJRU5ErkJggg==\n",
            "text/plain": [
              "<Figure size 576x396 with 2 Axes>"
            ]
          },
          "metadata": {
            "tags": []
          }
        }
      ]
    },
    {
      "metadata": {
        "id": "uoblFc3YDwso",
        "colab_type": "text"
      },
      "cell_type": "markdown",
      "source": [
        "## SVM"
      ]
    },
    {
      "metadata": {
        "id": "gGbYUV3ZVfu2",
        "colab_type": "code",
        "outputId": "995c65c8-e0ce-4151-fb2c-398bfc632c60",
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 843
        }
      },
      "cell_type": "code",
      "source": [
        "from sklearn import svm\n",
        "svm = svm.SVC(gamma='scale')\n",
        "features_to_include = ['mfccs_40']\n",
        "train(features_to_include, svm)"
      ],
      "execution_count": 11,
      "outputs": [
        {
          "output_type": "stream",
          "text": [
            "total number of features 40\n",
            "Score: 0.8412698412698413\n",
            "cross_val_scores: [0.86759582 0.86759582 0.97275986 0.97164751 1.        ]\n",
            "Accuracy: 0.94 (+/- 0.11)\n",
            "0.8412698412698413\n",
            "              precision    recall  f1-score   support\n",
            "\n",
            "           0       1.00      0.75      0.86        40\n",
            "           1       0.70      1.00      0.82        23\n",
            "\n",
            "   micro avg       0.84      0.84      0.84        63\n",
            "   macro avg       0.85      0.88      0.84        63\n",
            "weighted avg       0.89      0.84      0.84        63\n",
            "\n",
            "[[30 10]\n",
            " [ 0 23]]\n",
            "\n",
            "Confusion matrix, without normalization\n",
            "[[30 10]\n",
            " [ 0 23]]\n",
            "*** Scaled ***\n",
            "scaled_model score: 1.0\n"
          ],
          "name": "stdout"
        },
        {
          "output_type": "execute_result",
          "data": {
            "text/plain": [
              "SVC(C=1.0, cache_size=200, class_weight=None, coef0=0.0,\n",
              "  decision_function_shape='ovr', degree=3, gamma='scale', kernel='rbf',\n",
              "  max_iter=-1, probability=False, random_state=None, shrinking=True,\n",
              "  tol=0.001, verbose=False)"
            ]
          },
          "metadata": {
            "tags": []
          },
          "execution_count": 11
        },
        {
          "output_type": "display_data",
          "data": {
            "image/png": "iVBORw0KGgoAAAANSUhEUgAAAbAAAAGACAYAAADMNDeHAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDMuMC4yLCBo\ndHRwOi8vbWF0cGxvdGxpYi5vcmcvOIA7rQAAIABJREFUeJzt3X98zfX///Hb2ea0zbAfbBqWt19F\nIvohlN8SUZGalpVS+RnTu5gfoYQ2vSlRJD96DzVGXz5+1xt9pPlNWDRUi8WamV/bbLOd7x/enU/y\n2g+yndeL+7XL63LZeZ3zer4eR9m9x/P1PK9jczgcDkRERCzGzdUFiIiIXAsFmIiIWJICTERELEkB\nJiIilqQAExERS1KAiYiIJSnAxPQcDgdz586lc+fOdOjQgXbt2jF27FjOnTv3t8Z9/fXXadmyJZs2\nbbrqY/fu3Uvv3r3/1vmvt1WrVnH+/HnD5/71r3/x+eefl3JFIiXLps+BidlNmjSJbdu2MW3aNIKC\ngsjMzGT8+PH8/PPPLFiwAJvNdk3j1q1bl7Vr1xISEnKdK3aNRx55hHnz5lG5cmVXlyJSKtSBiamd\nPn2amJgY3n33XYKCggDw9vZm9OjRvPTSSzgcDrKzsxk9ejQdOnSgY8eOvPvuu+Tl5QHQpk0bvvji\nC7p3786DDz7Iu+++C0B4eDj5+fn07t2bb775hjZt2rBjxw7nef94fPHiRUaOHEmHDh1o3749AwcO\n5Pz582zdupX27dsDXNP5/yo8PJxPPvmE0NBQHnjgARYsWMBHH33EI488QqdOnTh69CgAP/30E888\n8wwdO3akffv2rFixAoDhw4fz888/Ex4ezo4dO4iMjGTixIl06dKF1atXExkZyUcffcTevXtp1aoV\nGRkZAMyYMYNBgwZd739tIqVCASam9v3331O5cmVq1qx52f5bbrmFNm3a4ObmxmeffcaJEydYuXIl\nX375JTt27HD+YgfYvn07sbGxLFmyhPnz53PixAliYmIAiImJoWXLlgWe/9tvv+XYsWOsWbOGdevW\nUatWLXbv3n3Za67l/Ea2b9/OggULmDhxIpMmTaJy5cqsWbOGWrVqsWTJEgCio6Np3bo1q1evZsKE\nCYwcOZLc3FwmTpzofD/33nsvAPHx8cTFxdGxY0fnORo0aEC7du2YOXMmKSkpLFy4kFGjRhX570HE\njBRgYmqnT58mICCg0Nds3LiRp59+Gg8PDzw9PenSpQubN292Pt+lSxfc3d0JCgoiICCA48ePF/v8\n/v7+HDlyhK+++oqsrCwiIiJ46KGHSuT8rVu3xsPDgzp16pCVlUWHDh0AqFOnDr///jsAH330kfPa\n2z333EN2djapqamG4zVt2pRbbrnliv1DhgxhzZo1DB8+nP79+xMYGFjsPw8RM1GAian5+fmRkpJS\n6GtOnTpFhQoVnI8rVKhAWlqa87GPj4/zZ3d3d+f0XnE0aNCAUaNGERMTQ/PmzfnnP//J2bNnS+T8\nZcuWdb7mz4/d3NzIz88HYNOmTTz77LN06NCBTp064XA4nM/91Z9r+ut5OnbsyM6dO+nSpUuh71/E\nzBRgYmp33303aWlpJCQkXLY/NzeXKVOmkJWVRcWKFTl9+rTzudOnT1OxYsWrOs+fQwLgzJkzzp8f\neeQRYmJi2LBhA1lZWcyePfuyY6/H+YsjNzeXiIgI+vXrx9q1a1m+fPk1LWBJSUnhf/7nf3j00UeZ\nNm3ada9TpLQowMTUypcvz0svvcSwYcNISkoCICsri9GjR/PDDz/g5eVFq1atiIuLIy8vj8zMTJYt\nW1bodS0jlSpV4uDBg8Cl5ejZ2dkALFmyhOnTpwPg6+tLjRo1rjj2epy/OLKyssjMzKR+/frApWtv\nZcqUITMzEwAPD48rukMj48eP56WXXmLEiBGsXr2aAwcOXPdaRUqDAkxM79VXX+Xpp5+mX79+dOjQ\ngW7duhEQEODsHsLDw6lcuTKPPvooTz75JK1atbps4UJx9O/fn3nz5tG5c2eOHDlCrVq1AGjbti0J\nCQk8/PDDdOzYkcOHD/PCCy9cduz1OH9x/BHmTzzxBE888QQhISG0a9eOvn37kpmZySOPPEKPHj1Y\ntWpVgWNs3LiRY8eO0aNHD3x8fBgyZAijRo26qmlVEbPQ58BERMSS1IGJiIglebi6ABERuflkZWUR\nGRlJWloa2dnZ9O/fnzvuuIOhQ4eSl5dHpUqVmDRpEna7vcAxNIUoIiKlbtWqVSQnJ/Pyyy+TnJzM\niy++SOPGjWnRogUdO3Zk8uTJVK5cmbCwsALH0BSiiIiUuk6dOvHyyy8DcPz4cYKCgti6dStt27YF\nLn2wPz4+vtAxNIUoIiIu06NHD06cOMGMGTN44YUXnFOGAQEBBd5l5g83ZYB5NRro6hIsZcfiEdz7\n1ARXl2EZMXNHuLoES2l/eyW++rHwX1Ryue53B5fKef7O78qs3cX7kPwXX3zBgQMHeOONN/jzFa3i\nXN3SFKIU6c5apfOXRW5OFbzKuLoEKYjN7dq3Iuzfv995X9C6deuSl5dH2bJluXDhAnDpjjFF3adT\nASYiIqVux44dzJkzB4CTJ0+SmZlJs2bNWLt2LQDr1q274sbZf3VTTiGKiEgxXOOXxRZHjx49GDly\nJGFhYVy4cIHRo0dTv359hg0bRmxsLMHBwTzxxBOFjqEAExERY8WYCrxWnp6e/Otf/7pi/9y5c4s9\nhgJMRESMlWAHdj0owERExFgJdmDXgwJMRESMmbwDM3e8ioiIFEAdmIiIGNMUooiIWJLJpxAVYCIi\nYkwdmIiIWJI6MBERsSR1YCIiYkkm78DMHa8iIiIFUAcmIiLGNIUoIiKWpAATERFLcjP3NTAFmIiI\nGFMHJiIilqRViCIiItefOjARETGmKUQREbEkk08hKsBERMSYOjAREbEkdWAiImJJJu/AzF2diIhI\nAdSBiYiIMU0hioiIJZl8ClEBJiIixtSBiYiIJakDExERS1KAiYiIJZl8CtHc8SoiIlIAdWAiImJM\nU4giImJJJp9CVICJiIgxdWAiImJJ6sBERMSKbCYPMHP3hyIiIgVQByYiIobM3oEpwERExJi580sB\nJiIixtSBiYiIJSnARETEksweYFqFKCIilqQOTEREDJV0BxYdHc3OnTu5ePEiffr0Yf369SQkJODr\n6wtA7969adWqVYHHK8BERMRYCebXli1bOHToELGxsaSnp9O1a1ceeOABXnvtNVq3bl2sMRRgIiJi\nqCQ7sPvuu48GDRoAUL58ebKyssjLy7uqMXQNTEREDNlstmveiuLu7o63tzcAcXFxtGjRAnd3d+bP\nn89zzz3HkCFDOHXqVKFjqAMTERFDpbEK8euvvyYuLo45c+awf/9+fH19qVu3Lp988gnTpk1j9OjR\nBR6rDkxERAyVZAcGsGnTJmbMmMGsWbMoV64cTZs2pW7dugC0adOGxMTEQo9XgImISKk7d+4c0dHR\nzJw507nq8NVXX+Xo0aMAbN26ldq1axc6hqYQRUTEWAnOIK5atYr09HQiIiKc+7p160ZERAReXl54\ne3szceLEQsdQgImIiKGSvAYWGhpKaGjoFfu7du1a7DEUYCIiYsjst5JSgImIiCEFmIiIWJO580ur\n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\niYiIIZM3YAowEREpgMkTTAEmIiKGtIhDREQsyeyLOBRgIiJiyOT5pVWIIiJiTerARETEmMlbMAWY\niIgYKslFHFu3bmXw4MHUrl0bgDp16vDmm29e1RgKMBERMVTSizjuv/9+pk6des3HK8BERMSQyWcQ\ntYhDREQKYPsbWzEcPnyYvn1U0hc9AAAO0UlEQVT78swzz7B58+arLk8dmIiIGCrJa2DVq1dn4MCB\ndOzYkaNHj/Lcc8+xbt067HZ7scdQByYiIqUuKCiITp06YbPZCAkJoWLFiqSkpFzVGAowERExZLNd\n+1aU5cuXM3v2bABSU1NJS0sjKCjoqurTFKKIiBgqyUUcbdq04fXXX+c///kPubm5jB079qqmD0EB\nJiIiBSnBBPPx8WHGjBl/awwFmIiIGNLd6EVExJLMfjd6LeIQERFLUgcmIiKGTN6AKcBERKQAJk8w\nBZiIiBjSIg4REbEksy/iUICJiIghk+eXViGKiIg1qQMTERFjJm/BFGAiImJIizhERMSStIhDREQs\nyeT5pQATERFj6sBERMSizJ1gWkYvIiKWpA5MREQMaQpRREQsyeT5pQATERFj6sBERMSS9EFmERGx\nJnPnl1YhioiINakDExERQyZvwBRgIiJiTIs4RETEkrSIQ0RErMnc+aUAExERYybPL61CFBERa1IH\nJiIihrSIQ0RELEmLOERExJLM3oHpGpiIiFiSOjARETFk9g5MASYiIobMfg1MU4giImJJ6sBERMSQ\nphBFRMSSTJ5fCjARESmAyRNMASYiIobMvohDASYiIobMfg1MqxBFRMSS1IGJiIihkm7AJkyYwPff\nf4/NZmPEiBE0aNDgqo5XgImIiLESTLBt27aRlJREbGwsR44cYcSIEcTGxl7VGJpCFBERQ7a/8U9R\n4uPjadeuHQA1a9bkzJkznD9//qrqU4CJiIghm+3at6KcPHkSPz8/52N/f39SU1Ovqr6bcgrR86Z8\n13+P/syK79cPH3N1CZajPzNzKs2/9w6H46qPUQcmIiKlLjAwkJMnTzof//7771SqVOmqxlCAiYhI\nqWvevDlr164FICEhgcDAQHx8fK5qDE0MiYhIqWvcuDF33nknPXr0wGazMWbMmKsew+a4lolHERER\nF9MUooiIWJICTERELEkBJiIilqQAExERS1KAiYjp5Ofnu7oEsQAto5er8sMPP2Cz2fDx8aFatWo4\n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\nXtm9AMIHlQAAAABJRU5ErkJggg==\n",
            "text/plain": [
              "<Figure size 576x396 with 2 Axes>"
            ]
          },
          "metadata": {
            "tags": []
          }
        }
      ]
    },
    {
      "metadata": {
        "id": "App-uchxwyjm",
        "colab_type": "text"
      },
      "cell_type": "markdown",
      "source": [
        "#Save Model"
      ]
    },
    {
      "metadata": {
        "id": "mcZSoOOF41ip",
        "colab_type": "code",
        "colab": {}
      },
      "cell_type": "code",
      "source": [
        "import pickle\n",
        "import datetime\n",
        "filename = \"rf-{}.pkl\".format(datetime.datetime.now().strftime(\"%Y%m%dT%H%M\"))\n",
        "pickle.dump(rf, open(filename, 'wb'))"
      ],
      "execution_count": 0,
      "outputs": []
    }
  ]
}